import java.util.Arrays;

public class Solution_88 {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int p = m - 1;
        int p1 = nums1.length - 1;
        int q = n - 1;

        while (p >= 0 && q >= 0) {
            nums1[p1--] = nums1[p] > nums2[q] ? nums1[p--] : nums2[q--];
        }
        // 将较大的插入到了 [p1, nums1.length - 1], 剩下的都是较小的
        // 如果 p >= 0 说明 nums1 剩下的都是较小的, 这里就不需要操作
        // 如果 q >= 0 说明 nums2 剩下的都是较小的, 这里需要把 nums2 剩下的部分拷贝到 nums1 中
        System.arraycopy(nums2, 0, nums1, 0, q + 1);
    }

    public static void main(String[] args) {
        int[] nums1 = {1,2,3,0,0,0};
        int m = 3;
        int[] nums2 = {2, 5, 6};
        int n = 3;
        new Solution_88().merge(nums1, m, nums2, n);
        System.out.println(Arrays.toString(nums1));

    }
}
